const express = require('express');
const cors = require('cors');
const dotenv = require('dotenv');
const path = require('path');
const { connectDB } = require('./config/db');

// 加载环境变量
dotenv.config();

const app = express();

// 中间件
app.use(cors());
// 增加请求体大小限制，允许较大的base64图片上传
app.use(express.json({ limit: '50mb' }));

// 提供静态文件服务，使上传的图片可以通过URL访问
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));

// 连接MongoDB
connectDB();

// 路由
const authRoutes = require('./routes/auth');
const userRoutes = require('./routes/users');
const uploadRoutes = require('./routes/upload');
const blogRoutes = require('./routes/blog');

app.use('/api/auth', authRoutes);
app.use('/api/users', userRoutes);
app.use('/api/upload', uploadRoutes);
app.use('/api/blogs', blogRoutes);

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({
    errCode: 500,
    errMsg: '服务器内部错误'
  });
});

// 404路由处理
app.use((req, res) => {
  res.status(404).json({
    errCode: 404,
    errMsg: '请求的资源不存在'
  });
});

module.exports = app;